package com.itany.corejava.code17_设计模式.动态代理;



import java.lang.reflect.Proxy;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月13日16:36
 */
public class Test {
    public static void main(String[] args) {

        // Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
        // 该方法创建了代理对象，并通过代理对象调用了方法，在方法调用前后，会执行处理器中的操作
        // 参数一:目标类的类加载器
        // 参数二:目标类实现的接口列表
        // 参数三:指派方法调用的处理程序，即:代理类的方法的具体实现

         SomeService someService= (SomeService) Proxy.newProxyInstance(
                SomeServiceImpl.class.getClassLoader(),
                SomeServiceImpl.class.getInterfaces(),
                new LogInvocationHandler(new SomeServiceImpl())
        );
        someService.doSome();
        someService.doOther();

        UserService userService= (UserService) Proxy.newProxyInstance(
                    UserServiceImpl.class.getClassLoader(),
                    UserServiceImpl.class.getInterfaces(),
                    new LogInvocationHandler(new UserServiceImpl())
        );
        userService.register("aaaa","1234","2222","南京");
        userService.login("ddd","123456");

    }
}
